package com.zhiyou100.api.map_demo;

import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import java.util.function.BiConsumer;

public class Demo1 {

    public static void main(String[] args) {
        opeMap();
    }

    public static void testFor(){
        //map的循环
        HashMap<String,String> map = new HashMap<>();
        //添加元素
        map.put("2020123456","张三");
        map.put("2020123457","李四");
        map.put("2020123458","王五");
        map.put("2020123459","张三");
        //1. 先获取所有的key值列表   2.再遍历key获取value
        //获取当前map的所有key值列表
        Set<String> set = map.keySet();
        for (String key : set) {
            //根据key获取value
            String value = map.get(key);
            System.out.print(value + "\t");
        }
        System.out.println("\n------------将map转成Map.Entry类型的集合------------");
        //先将map转成set集合，此set集合中的元素是Map.Entry类型
        Set<Map.Entry<String, String>> entries = map.entrySet();
        //遍历此set集合
        for (Map.Entry<String, String> entry : entries) {
            //获取key与value
            String key = entry.getKey();
            String value = entry.getValue();
            System.out.println("key = " + key + ", value = " + value);
        }
        System.out.println("-------------forEach()------------");
        map.forEach(new BiConsumer<String, String>() {
            @Override
            public void accept(String key, String value) {
                System.out.println("key = " + key);
                System.out.println("value = " + value);
            }
        });


    }


    //操作     很大一定程度是依赖key的
    public static void opeMap(){
        //创建一个map保存个人信息  key是学号   value是姓名
        HashMap<String,String> map = new HashMap<>();
        //添加元素
        map.put("2020123456","张三");
        map.put("2020123457","李四");
        map.put("2020123458","王五");
        map.put("2020123459","张三");
        System.out.println("map = " + map);
        //修改元素
        //containsKey 判断当前map是否包含此key
        if (map.containsKey("2020123457")){
            //通过key获取value
            String s = map.get("2020123457");
            System.out.println("原数据是： = " + s);
            map.put("2020123457","赵六");
        }
        System.out.println("修改2020123457 = " + map);
        //判断是否包含某个value值
        boolean b = map.containsValue("张三");
        System.out.println("b = " + b);
        //getOrDefault  根据key获取元素，如果map中没有此key，就返回默认值
        String value = map.getOrDefault("2020123459", "小明");
        System.out.println("value = " + value);
        map.put("2020123460","华子");
        //根据key移除数据
        String s = map.remove("2020123459");
        System.out.println("map = " + map);
        //获取元素个数
        int size = map.size();
        System.out.println("size = " + size);
        //获取map集合中所有的values值,返回一个由value组成的集合
        Collection<String> values = map.values();
        for (String value1 : values) {
            System.out.println("value1 = " + value1);
        }
    }



    //创建
    public static void createMap(){
        //创建一个空的map集合。默认key与value 的类型是Object类型
        HashMap map = new HashMap();
        //创建一个指定类型的map,key是String   value也是String
        HashMap<String,String> map2 = new HashMap<>();
    }


}
